#!/usr/bin/env python
# -*- coding: ISO-8859-1 -*-
'''
autor: João Manuel Pires Alturas 
data criação: 2011/12/04
linguagem: python

'''
import csv, sqlite3
import re

# Código pesquisado na net
class CsvToSqlite:
    
    def __init__(self, nomeTabela, nomeCSV):
        self.nomeTabela = nomeTabela
        self.nomeCSV = nomeCSV
        
    def convert(self):
        conn = sqlite3.connect("rebides.sqlite")
        curs = conn.cursor()
        cmd = '''CREATE TABLE IF NOT EXISTS "{0}" (codigo_do_docente INTEGER,
	 	nome TEXT, 
		ultimo_grau TEXT, 
		curso TEXT, 
		categoria TEXT, 
		regime_de_tempo TEXT, 
		ano_lectivo INTEGER, 
		tipo_de_estabelecimento TEXT, 
		nome_do_estabelecimento TEXT)'''.format(self.nomeTabela)

        curs.execute(cmd)
        conn.commit()
        reader = csv.reader(open(self.nomeCSV, "rb"))
        for row in reader:
            codDocente = row[0]
            nomeDocente = row[1]
            ultimoGrau = row[2]
            curso = row[3]
            categoria = row[4]
            regime = row[5]
            ano = row[6]
            tipoEstab = row[7]
            nomeEstab = re.sub('"','',row[8])
            
	    try:    
            	cmd = '''INSERT INTO  "{0}" (codigo_do_docente,
			nome,
			ultimo_grau,
			curso,
			categoria,
			regime_de_tempo,
			ano_lectivo,
			tipo_de_estabelecimento,
			nome_do_estabelecimento)
			VALUES("{1}", 
			"{2}", "{3}", "{4}", 
			"{5}", "{6}", "{7}", "{8}", "{9}")'''.\
                       format(self.nomeTabela, 
				unicode(codDocente, 'utf-8'), 
				unicode(nomeDocente, 'utf-8'), 
				unicode(ultimoGrau, 'utf-8'), 
				unicode(curso, 'utf-8'), 
				unicode(categoria, 'utf-8'), 
				unicode(regime, 'utf-8'), 
				unicode(ano, 'utf-8'), 
				unicode(tipoEstab, 'utf-8'), 
				unicode(nomeEstab, 'utf-8'))
	    except:
            	print nomeEstab, type(nomeEstab)
            if row[0] != 'Código do Docente':
                try:
                    curs.execute(cmd)
                except:
                    pass
            else:
                pass
    
        conn.commit()
        conn.close()


